package simonxianyu.boot.mybatis.base;


import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
* MyBatis基础接口，具体的Mapper继承该类后获得相关接口定义。
 * 具体Mapper的 SQL 映射仍需要编写
*/
public interface BaseMapper<T, K> {


    /**
    * 根据id 主键来查询出实体类
    */
    T get(K id);

    /**
    * 根据传入的实体对象中的某些参数来查询整个实体对象
    */
    List<T> findByExample(T t);

    /**
    * 查询出所有的实体对象
    * @return  返回的所有实体对象的list
    */
    List<T> findAll();

    Page<T> findAllPaged(Pageable pr);

    /**
    * 更新实体对象
    */
    void update(T t);

    /**
    * 根据传入的对象插入数据
    */
    void saveNew(T t);

    /**
    * 查询出表中所有的数据
    */
    long count();

    /**
    * 根据传入的参数查询记录的条数
    */
    long countByExample(T t);

    /**
    * 根据传入的id 删除数据库中的某条数据
    */
    void deleteById(K id);
}